[Fabric] Use the layout metrics to get the scale factor in component views. #1816
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Please select one of the following
Summary
Fabric does not provide guarantees for the order of creation of host views, which means a view could be created before being added to a window. This causes issues when reading the
backingScaleFactor
within a view because it returns a nil window and the returned value is 0.This caused border rendering issues in the
<View />
component since the border was generated before the view hierarchy was added to a window.The layout metrics of the shadow node provides the current scale factor through the
pointScaleFactor
property. This is set when initializing the layout context, which guarantees that the value will be available when a view is being created and inserted.Changelog
[macOS] [FIXED] - Use the layout metrics scale factor in view components to fix scale dependent rendering
Test Plan
Tested by running RNTester on macOS with fabric (RCT_NEW_ARCH_ENABLED=1) and launching the API Border example.
Without the fix:

With the fix:
